iT邦幫忙

2022 iThome 鐵人賽

DAY 1
0
Software Development

Rails Active Model系列 第 1

D-1 序:為什麼要研究 Active Model

  • 分享至 

  • xImage
  •  

本人目前任職於 SHOPLINE 的 Product Operation 產品維運工程師,工作內容除了處理一些店家遇到的線上異常狀況回報,或者滿足一些比較客製化的需求之外,還有基於 SRE 精神,去經營維護一些自動化監控,或是把日常高度重複性需要人工處理的任務做成自動化工具,而後者就是我開始研究 Active Model 的動機。

我們部門為了能夠把高度重複的人工維運項目,做成一個:『能夠開放客服人員填寫表單,輸入必要資訊後,便可以自動執行各種維運項目』的介面,於是發展了一個名為 SL-ERP 的工具,可以省去工程師執行重複日常工作的時間,不必凡事都工程師親力親為,符合 SRE 的精神。

這個東西其實在我接手時就已經存在有一段時間了,有一些前人做好的基底,包括 bitbucket pipeline & helm 以及 UI 介面模板等的設定,以及老舊的一些維運項目。但隨著產品迭代到了現在,這些維運項目除了已經不堪使用之外,原本的做法也很不符合 Rails 的精神

於是我在進行了一段時間的研究後,基於以下兩個方向,著手重構這個老舊的專案:

  1. 對 user 做到直覺方便使用,只要填表就能代替工程師執行相關的維運操作。

因為是給公司內部客服使用,所以不需要華麗的介面,只要簡單操作,可以填表自動執行維運項目就好。

  1. 對 developer 做到不只易於開發,還要能夠花更少的時間擴充新的維運項目。

最好是只需要專注在想擴充的維運 script 就好,不必管 Rails 其他的東西,像是 controller, view 等等。
畢竟自動化工具的存在意義就是為了讓工程師省時間,如果開發成本還要再大於日常人工處理的成本,那就是本末倒置了。

核心精神就是:擴充快速、管理方便、維護容易、code 要簡潔好看!

於是,我一路上透過看 Rails 文件,甚至到處爬 source code,尋找原生最合適的方式來完成各種基本功能,所以我開始研究 Active Model

透過引入 Active Model 的 form object 概念,我可以把自動化工具基本所需共用的流程,包括留下執行紀錄以及自動產生輸入表單等等做在抽象層,並透過繼承的方式,讓後人可以很方便的擴充各自的維運項目,並且仍然保有各自的客製靈活性。

而且,利用他本身的功能,可以用最簡潔的方式,自動 render 各維運項目需要不同的 form,以及可以依照各維運項目要求不同,進行各自的 validation(防呆機制),完全不需要再寫 view & controller !

接下來,我將會一點一點的將我學到、爬到的各種方法與使用技巧,通通分享給你!
我們明天見!


下一篇
D-2 Active Model 本身有什麼功能? - assign_attributes
系列文
Rails Active Model28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言